目錄
安全性和合規性是 AWS 和客戶的共同責任。這種責任共擔模式旨在幫助減輕客戶的營運負擔,同時,為了提供支持在 AWS 上佈署客戶解決方案的靈活性和客戶控制力,客戶仍需負責總體安全性的某些方面。責任區分通常是指雲「本身」的安全性和雲「中」的安全性。
AWS 上運行、管理和控制各種組件,從軟體虛擬化,一直到運行 AWS 服務的設施的物理安全性,AWS 負責保護運行 AWS 雲端中提供的所有服務的基礎設施。基礎設施包括用於運行 AWS 雲服務的硬體、軟體、網路和設施。
AWS 負責物理基礎設施,包括:
保護基礎設施是 AWS 的第一要務,AWS 提供了一些來自第三方審計機構的報告,這些機構已經確認 AWS 對各種計算機安全標準和法規的合規性。
AWS 負責保護和維護雲端基礎設施,而客戶負責遷移到雲中的所有內容的安全性,客戶必須採取的安全措施取決於客戶使用的服務以及系統的複雜程度。客戶職責包括負責靜態資料和傳輸中資料的加密、選擇和保護任何實例作業系統(包括更新和安全修補)、保護在 AWS 資源上啓動的應用程式、安全組配置、防火牆配置、網路配置和安全帳戶管理。
當客戶使用 AWS 服務時,他們保持對其內容擁有完全的控制權,客戶負責管理關鍵內容安全要求,包括:
AWS Identity and Access Management (IAM) 能夠控制AWS 雲端中的計算、儲存、資料庫和應用程式服務的訪問,IAM 可用於處理身份驗證以及指定和實施授權政策,可以指定哪些用戶可以訪問哪些服務。
IAM 是一種工具,用於集中管理啓動、配置、管理和終止 AWS 帳戶中資源的訪問權限,它支持精細控制對資源的訪問,包括能夠精確指定用戶有權對每個服務呼叫哪些 API。無論用戶使用 AWS 管理控制台、AWS CLI 還是 AWS 開發工具包(SDK),對 AWS 服務的每個呼叫都算是一個 API 呼叫。
透過 IAM,用戶可以管理誰可以訪問哪些資源,以及如何訪問這些資源,可以針對不同資源向不同人員授予不同權限。例如,允許一些用戶完全訪問 Amazon EC2、Amazon S3、Amazon DynamoDB、Amazon Redshift 和其他 AWS 服務。但是,對於其他一些用戶,可以允許只對幾個 S3 儲存桶進行唯讀訪問。同樣,可以授予其他一些用戶僅管理特定 EC2 執行個體的權限,也可以允許少數用戶只訪問帳戶帳單訊息,而不能訪問其他訊息。
IAM 是 AWS 提供給 AWS 帳戶(Account)的一項服務,無需支付額外費用。以下說明 IAM 四個組件的功能。
身份驗證(Authentication)是一個基本計算機安全概念:用戶或系統必須先證明其身份,才可以獲得權限(Authorization)去執行。定義 IAM 用戶時,將選擇允許用戶訪問 AWS 資源時使用的訪問類型:以 AWS 管理控制台訪問和程式方式訪問。可以僅分配以程式方式訪問或僅分配控制台訪問,也可以同時分配這兩種類型的訪問。下圖顯示 ❶ 主控台存取就是使用 AWS 管理控制台訪問;而 ❷❸ 的存取金鑰就是程式方式訪問時需要提供的安全憑證。
圖 1. AWS IAM用戶訪問類型
當授予程式訪問權限,IAM 用戶使用 AWS CLI、AWS 開發工具包或某些其他開發工具進行 AWS API 呼叫時,需提供訪問密鑰 ID 和秘密訪問密鑰,這些資料可以在上圖的存取金鑰中取得。當授予 AWS 管理控制台訪問權限時,IAM 用戶需要填寫在瀏覽器中登錄窗口中顯示的內容,系統會提示用戶提供 12 位數字帳戶 ID 或相應的帳戶別名,還必須輸入 IAM 用戶名和密碼。如果為用戶啓用了多重因素認證(Multi-Factor Authentication,以下簡稱MFA),系統還會提示他們提供MFA 令牌,才能訪問 AWS 服務和資源。
最低特權原則是計算機安全方面的一個重要概念,它提倡根據用戶的需求,只向用戶授予所需的最低用戶特權。在創建 IAM 政策時,最佳實踐是遵循授予最低特權這一安全性建議。
預設情況下,IAM 用戶無權訪問 AWS 帳戶中的任何資源或資料,須通過創建政策,明確向用戶、組或角色授予權限,政策是一個採用 JavaScript 物件表示法 (JavaScript Object Notation,以下簡稱JSON) 格式的檔案。政策中列出了是允許還是拒絕對 AWS 帳戶中資源的訪問。預設情況下,用戶不能在帳戶中執行任何操作(隱式拒絕),除非明確允許執行這些操作。未經明確允許的所有操作都會被拒絕,而明確拒絕的所有操作將始終被拒絕。
請注意,IAM 服務配置的範圍為全局,這些設定不是在 AWS 區域級別定義的,IAM 設定適用於所有 AWS 區域。政策可以附加到任何 IAM 實體,包括用戶、組、角色或資源。政策的評估順序不會影響評估結果,所有政策都將完成評估,而結果一定是該請求被允許或拒絕。出現衝突時,以最嚴格的政策為準。
IAM 政策有兩種:第一種為基於身份的政策(Identity-based policies)是可以附加到委託人(也稱為「身份」,例如 IAM 用戶、角色或組)的權限政策。這些政策可以控制該身份在什麼條件下可以針對哪些資源執行哪些操作。基於身份的政策可以進一步分類為:
第二種為基於資源的政策(resource-based policies)是附加到資源(如 S3 儲存桶)的 JSON 政策檔案,這些政策可以控制指定的委託人可以對該資源執行哪些操作,以及在什麼條件下執行這些操作。
下圖是一個IAM政策的範例,該範例中, IAM 政策將僅授予用戶可以完全存取以下資源的權限:
此外,該 IAM 政策還包含顯式拒絕("Effect":"Deny")元素。該 NotResource 元素可幫助確保用戶不能使用政策中指定的操作和資源以外的任何其他 DynamoDB 或 S3 操作或資源,即使在其他政策中已授予相關權限也不例外。顯式拒絕語句優先級高於允許語句。
圖 2. AWS IAM政策範例
基於身份的政策附加到用戶、組或角色,而基於資源的政策附加到資源(如 S3 儲存桶),這些政策可指定哪些可以訪問該資源,以及可以對該資源執行哪些操作。基於資源的政策僅以內聯方式定義,這意味著只對資源本身定義政策,而不是創建一個單獨的 IAM 政策文件進行附加。例如,要針對 S3 儲存桶創建一個 S3 儲存桶政策(一種基於資源的政策),請導航到該儲存桶,單擊 Permissions(權限)選項卡,單擊 Bucket Policy(儲存桶政策)按鈕,然後定義 JSON 格式的政策文件。Amazon S3 訪問控制列表(ACL)是另一個基於資源的政策示例。
下圖表示了 IAM 政策確定流程,在確定是否允許權限時,IAM 會先檢查是否存在任何的顯式拒絕政策。如果不存在顯式拒絕政策,IAM 會繼續檢查是否存在任何的顯式允許政策。如果既不存在顯式拒絕政策,也不存在顯式允許政策,IAM 將使用預設政策,即拒絕訪問,這一過程稱為隱式拒絕。僅當所請求的操作不是顯示拒絕,而是顯式允許時,才允許用戶執行操作。
圖 3. IAM 政策確定流程
IAM 角色(Role)是在帳戶中創建的一種具有特定權限的 IAM 身份。IAM 角色與 IAM 用戶相似,因為它也是一種 AWS 身份,可以向其附加權限政策,這些權限用於確定該身份在 AWS 中可以或不可以執行哪些操作。但是,角色旨在由需要它的任何人承擔,而不是唯一地與某個人員關聯。此外,角色沒有關聯的標準長期憑證(如密碼或訪問密鑰)。但是,當某個實體代入角色時,它會為該實體提供角色會話的臨時安全憑證。
可以使用角色向通常無法訪問的 AWS 資源的用戶、應用程式或服務授予訪問權限。例如,需要允許移動應用程式使用 AWS 資源,但是不希望將 AWS 密鑰嵌入應用程式中(在應用程式中難以輪換密鑰,而且用戶可能會提取並濫用這些密鑰)。此外,您有時可能希望向擁有在 AWS 之外(例如在 Windows 登錄的用戶)定義的身份的用戶授予 AWS 訪問權限。
下圖展示了 IAM 角色的使用範例,在 Amazon EC2 執行個體中的應用程式要存取 S3 儲存桶中的照片,依照先前所學習的方式,必須把 IAM 用戶的存取金鑰寫在應用程式中,但如此一來,在任何地方執行應用程式都可以存取 S3 存儲桶了,為了將應用程式與訪問權限解除相依性,我們利用IAM 角色的觀念,
❶將訪問S3 儲存桶的IAM政策附加到IAM 角色中
❷Amazon EC2 執行個體帶入角色,這樣一來Amazon EC2 執行個體就具有存取S3 儲存桶的權限了
❸Amazon EC2 執行個體中的應用程式,也具有存取S3 儲存桶的權限。
圖 4. IAM 角色使用範例
當目標是保護數位資料的安全時,資料加密是一個必不可少的工具。資料加密對可識別的資料進行編碼,以便無權訪問可用於對資料進行解碼的私有密鑰的所有人都無法讀取相關資料。因此,即使攻擊者獲得了對資料的訪問權限,他們也無法獲取有價值的訊息。
靜態資料是指以物理方式儲存在磁碟或磁帶上的資料。可以在 AWS 上創建加密檔案系統,以便所有資料和元資料(Metadata)都可以通過開放標準高級加密(AES)-256 加密算法進行靜態加密。當使用 AWS KMS 時,加密和解密會自動處理,因此無需修改應用程式。如果組織受公司或監管政策的約束,需要對靜態資料和元資料進行加密,AWS 建議對儲存資料的所有服務啓用加密。用戶可以加密 AWS KMS 支持的任何服務中儲存的資料。
傳輸中的資料是指在網路中移動的資料。傳輸中資料的加密通過結合使用傳輸層安全性(Transport Layer Security ,以下簡稱TLS)與開放標準 AES-256 密碼來實現,TLS 以前稱為安全通訊層(Secure Sockets Layer,以下簡稱SSL)。
AWS Certificate Manager 是一項AWS服務,可用於預置、管理和部署要與 AWS 服務和您的內部資源一起使用的 SSL 或 TLS 證書。SSL 或 TLS 證書用於保護網路通訊的安全,並確認網站在網際網路上的身份以及資源在私有網路上的身份。使用 AWS Certificate Manager,可以請求證書,然後將其部署在 AWS 資源(如負載均衡器或 CloudFront 分配)上。AWS Certificate Manager 還可以處理證書續訂事宜。通過 HTTP 傳輸的 Web 流量不安全,但是,通過安全 HTTP (HTTPS)傳輸的流量使用 TLS 或 SSL 進行加密。HTTPS 流量通過對通信進行雙向加密來防止竊聽和中間人攻擊。
預設情況下,所有 Amazon S3 儲存桶都是私有的,只能由獲得顯式訪問授權的用戶訪問。管理和控制對 Amazon S3 資料的訪問至關重要,AWS 提供了許多工具和選項,用於控制對 S3 儲存桶或物件的訪問,包括:
AWS 與外部認證機構和獨立審計員合作,為客戶提供有關 AWS 所建立和運行的政策、流程及控制措施的資訊。提供了一個完整的 AWS 合規性計劃列表。可以使用 AWS 服務來滿足合規性目標的認證的範例,ISO/IEC 27001:2013 認證便是一例。它指定了建立、實施、維護和持續改進資訊安全管理系統的相關要求。此項認證的基礎是制定並實施嚴格的安全計劃,包括開發和實施資訊安全管理系統。資訊安全管理系統定義了 AWS 如何以整體和全面的方式持續管理安全性。
AWS Config 服務可供客戶評估和審查AWS 資源配置,它可以持續監控和記錄AWS 資源配置,並支持自動依據配置需求評估記錄的配置。藉助 AWS Config,可以查看配置更改以及 AWS 資源之間的關係,查看詳細的資源配置歷史記錄,並判斷目前的配置在整體上是否符合內部指南中所指定的配置要求。如此一來,就能夠簡化合規性審查、安全性分析、變更管理和營運問題檢查。
下圖顯示的 AWS Config 控制面板屏幕截圖中看到的那樣,AWS Config 會保留帳戶中❶存在的所有資源的庫存列表,然後檢查配置❷規則和❸資源的合規性。發現不合規的資源會被標記出來,提醒帳戶中存在配置問題,應予以處理。AWS Config 是一項❹區域性服務,如果要跨區域追蹤資源,需要在每個要使用的區域中啓用追蹤功能,而AWS Config 提供聚合器功能,可顯示多個區域甚至多個帳戶的匯總資源視圖。
圖 5. AWS Config儀表板